'''
Created on 19-03-2014

@author: CRivera
'''

import zipfile;
import glob;
import os

class readfile:
    
    def __init__(self, rutaRoot):
        self.rutaArchivo=rutaRoot;
        self.rutaParcial="";
        self.registers=[];
        
    """
    Lectura de todos los datos.
    """
    def readRootDirectory(self):
        self.rutaArchivo=str(self.rutaArchivo).replace('\\', '/')
        rootDirectory = os.listdir(str(self.rutaArchivo))#Lectura por cada anio en carpeta
        self.rutaParcial="";
        countZipArchivos=0;
        for cadaAnio in rootDirectory:#Cada anio decargado
            print "\n------------------Nuevo anio----------------\n";
            self.rutaParcial=str(self.rutaArchivo)+str(cadaAnio)
            #print "Anio:"+str(self.rutaParcial[34:38])
            
            rootZip = glob.glob(str(self.rutaParcial)+"/"+"*.zip")
            
            for archivoZip in rootZip:
                archivosEnZip = zipfile.ZipFile(archivoZip,'r')
                #nombreZip=str(archivoZip);
                #print "Mes: "+str(nombreZip[58:60])+" Dia: "+str(nombreZip[61:63]);

                for cadaArchivo in archivosEnZip.namelist():
                    countZipArchivos+=1;
                    print str(cadaArchivo);
                    print "Magnetometro:"+cadaArchivo[8:12]+" anio: "+cadaArchivo[0:4]+" Mes: "+cadaArchivo[4:6]+" Dia: "+cadaArchivo[6:8];
                print "    Cantidad en archivo: "+str(countZipArchivos);
                countZipArchivos=0;
                
                
    """
    Lectura de archivos por magnetometro
    """
    def readForMagnetometer(self, magnetom):
        self.rutaArchivo=str(self.rutaArchivo).replace('\\', '/')
        rootDirectory = os.listdir(str(self.rutaArchivo))#Lectura por cada anio en carpeta
        self.rutaParcial="";
        countZipArchivos=0;
        for cadaAnio in rootDirectory:#Cada anio decargado
            print "\n------------------Nuevo anio----------------\n";
            self.rutaParcial=str(self.rutaArchivo)+str(cadaAnio)
            
            rootZip = glob.glob(str(self.rutaParcial)+"/"+"*.zip")
            
            for archivoZip in rootZip:
                archivosEnZip = zipfile.ZipFile(archivoZip,'r')
                for cadaArchivo in archivosEnZip.namelist():
                    if(magnetom==cadaArchivo[8:12]):
                        countZipArchivos+=1;
                        print str(cadaArchivo);
                        print "Magnetometro:"+cadaArchivo[8:12]+" anio: "+cadaArchivo[0:4]+" Mes: "+cadaArchivo[4:6]+" Dia: "+cadaArchivo[6:8];
                print "    Cantidad en archivo: "+str(countZipArchivos);
                countZipArchivos=0;
                
    ###Leer archivos indicando: magnetometro, fecha de inicio y fecha termino.
    def readForDateStartEnd(self, Magnetom, dateStart, dateEnd):
        
        print "Magnetometro: "+str(Magnetom);
        print "Fecha Inicio: "+str(dateStart);
        print "Fecha Final: "+str(dateEnd);
        '''
        self.rutaArchivo=str(self.rutaArchivo).replace('\\', '/')
        rootDirectory = os.listdir(str(self.rutaArchivo))#Lectura por cada anio en carpeta
        self.rutaParcial="";
        countZipArchivos=0;
        for cadaAnio in rootDirectory:#Cada anio decargado
            print "\n------------------Nuevo anio----------------\n";
            self.rutaParcial=str(self.rutaArchivo)+str(cadaAnio)
            #print "Anio:"+str(self.rutaParcial[34:38])
            
            rootZip = glob.glob(str(self.rutaParcial)+"/"+"*.zip")
            
            for archivoZip in rootZip:
                archivosEnZip = zipfile.ZipFile(archivoZip,'r')
                #nombreZip=str(archivoZip);
                #print "Mes: "+str(nombreZip[58:60])+" Dia: "+str(nombreZip[61:63]);

                for cadaArchivo in archivosEnZip.namelist():
                    countZipArchivos+=1;
                    print str(cadaArchivo);
                    print "Magnetometro:"+cadaArchivo[8:12]+" anio: "+cadaArchivo[0:4]+" Mes: "+cadaArchivo[4:6]+" Dia: "+cadaArchivo[6:8];
                print "    Cantidad en archivo: "+str(countZipArchivos);
                countZipArchivos=0;
                '''
                
                
##########Prueba lectura de registros.
RFile=readfile("C:/Users/CRivera/Documents/Carisma/");
##RFile.readRootDirectory();
##RFile.readForMagnetometer('MANG');
RFile.readForDateStartEnd('MANG', 20070101, 20070103);
        